<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2020/10/12
  Time: 10:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title></title>
    <%--
jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。
这个功能非常有用，因为它使得我们可以发挥 Java 组件复用的优势。
class : 指定Bean的完整包名
type : 指定将引用该对象变量的类型。
beanName : 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。
    --%>
    <%--    <jsp:useBean id="name" class="package.css"/>--%>
</head>
<body>
<div>
    <%--  <jsp:useBean id="test"  class="Servlet.Blog.bean.TestBean">--%>
    <%--    <!--只有新建Bean实例时才会执行-->--%>
    <%--&lt;%&ndash;    <jsp:setProperty name="myName" property="somePro1"/>&ndash;%&gt;--%>
    <%--  </jsp:useBean>--%>
    <%--  <jsp:setProperty name="test" property="message" value="页面的内容" />--%>
    <%--  <p>输出信息...</p>--%>
    <%--  <jsp:getProperty name="test" property="message"/>--%>

</div>
<a href="/demo">去demo页面（x）</a>

<a href="demo.jsp">测试去demo</a>&nbsp;&nbsp;
<a href="fmt.jsp">格式化标签</a>
<a href="mysqldemo.jsp">sql标签</a>

index
<% out.print("这个是out.print"); %>
<% int y = 888; %>
<%
    String x = "1000";
    int a = 100;
    double b = 3.14;
    double rst = a * b;
    x = x + rst;
    out.print(x + y);
    out.println("你的IP:" + request.getRemoteAddr());
%>
<!--表达式-->
今天是<%=(new java.util.Date()).toLocaleString() %>
JSP指令
<%--语法：  <%@ directive attribute="value" %>--%>
<%--定义页面的依赖属性，比如脚本语言，error页面，缓存需求等 <%@ page %>--%>
<%--  <%@ include file="WEB-INF/header.jsp"  %>--%>
<!--flush 定义在包含资源前是否刷新缓存区-->
<jsp:include page="WEB-INF/header.jsp" flush="true"/>
<%@ include file="common.jsp" %>

<%--引入标签库的定义，可以是自定义标签  <%@ taglib prefix=""%>--%>

<%=config.getServletName() %>
<%=page.toString() %>
<span>控制流</span>
<% int type = 1; %>
<%if (type == 1 | type == 7) { %>
<p>今天是休息日</p>
<%} else {%>
<p>努力工作吧，少年</p>
<%}%>
<hr/>
<span>switch</span>
<%
    switch (type) {
        case 0:
            out.print("星期天");
            break;
        case 1:
            out.print("周一");
            break;
        case 2:
            out.print("周二");
            break;
        case 3:
            out.print("周三");
            break;
        case 4:
            out.print("周四");
            break;
        case 5:
            out.print("周五");
            break;
        case 6:
            out.print("周六");
            break;
    }
%>
<hr/>
for循环
<% int index; %>
<%for (index = 0; index < 6; index++) {%>
<font color="green" size="<%=index%>">
    菜鸟教程
</font><br/>
<%}%>
<hr/>
while循环
<% int w = 1;%>
<%while (w <= 3) {%>
<font color="blue" size="<%=w%>">
    菜鸟教程
</font><br/>
<% w++;%>
<%}%>
<hr/>
<h3>指令</h3>
<!--错误-->
<%--<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"--%>
<%--            width="60" height="80">--%>
<%--  <jsp:param name="fontcolor" value="red" />--%>
<%--  <jsp:param name="background" value="black" />--%>

<%--  <jsp:fallback>--%>
<%--    Unable to initialize Java Plugin--%>
<%--  </jsp:fallback>--%>

<%--</jsp:plugin>--%>

<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   属性值
</jsp:attribute>
    <jsp:body>
        XML 元素的主体
    </jsp:body>
</jsp:element>


<%--<jsp:text><![CDATA[<br>]]></jsp:text>--%>
<hr/>
<h2>HTTP头部请求实例</h2>

<table width="100%" border="1" align="center">
    <tr bgcolor="#949494">
        <th>Header Name</th>
        <th>Header Value(s)</th>
    </tr>
    <%
        Enumeration headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String paramName = (String) headerNames.nextElement();
            out.print("<tr><td>" + paramName + "</td>\n");
            String paramValue = request.getHeader(paramName);
            out.println("<td> " + paramValue + "</td></tr>\n");
        }
    %>
</table>
<hr/>
<h2>自动刷新</h2>
<%
    //设置每5秒自动刷新
    response.setIntHeader("Refresh", 1);
    //获取当前时间
    Calendar calendar = new GregorianCalendar();
    String am_pm;
    int hour = calendar.get(calendar.HOUR);
    int minute = calendar.get(calendar.MINUTE);
    int second = calendar.get(calendar.SECOND);
    if (calendar.get(Calendar.AM_PM) == 0) {
        am_pm = "AM";
    } else {
        am_pm = "PM";
    }
    String CT = hour + ":" + minute + ":" + second + " " + am_pm;
    out.println("当前时间：" + CT + "\n");


%>
<hr/>
<c:out value="&ltxxx&gt" default="aaa" escapeXml="true"></c:out>
<c:out value="&lt要显示的数据对象（使用转义字符）&gt" escapeXml="false" default="默认值"></c:out><br/>
<c:out value="${null}" escapeXml="false">使用的表达式结果为null，则输出该默认值</c:out><br/>
<hr/>
<c:set var="salary" scope="session" value="${200*2}"/>
<c:out value="${salary}"/>
<c:remove var="salary"/>
<p>删除 salary 变量后的值: <c:out value="${salary}"/></p>
<hr/>
<%--<c:catch var="catchEx">--%>
<%--    <% int xx = 5/0;%>--%>
<%--    <c:out value="${xx}"/>--%>
<%--</c:catch>--%>
<%--<c:if test="${catchEx}!=null">--%>
<%--    <p>异常为:${catchEx}<br/>--%>
<%--    发生的异常：${catchEx.message}--%>
<%--    </p>--%>
<%--</c:if>--%>

<div>

    <c:import var="data" url="http://www.baidu.com" charEncoding="UTF-8" />
    <c:out value="${data}" />
</div>

<hr/>

<div >
    items 要循环的信息;
    begin: 0 第一个元素;
    end 最后一个元素（0 第一个）;
    step 每一次迭代的步长;
    var 当前条目的变量名称;
    varStatus 代表循环状态的变量名称
<%--    <c:forEach items="" begin="0" end="10" step="1" var="u" varStatus="">--%>
<%--    </c:forEach>--%>
    <c:forEach var="i" begin="1" end="5">
        item <c:out value="${i}" /><br/>
    </c:forEach>
    c:forTokens标签通过指定分隔符将字符串分隔为一个数组然后迭代它们
    <c:forTokens items="google,baidu,soho," delims="," var="name">
        <c:out value="${name}"/><br/>
    </c:forTokens>
    <hr/>
    <!--浏览页面时 自动跳转 测试失败-->
<%--    <c:redirect url="http://www.baidu.com" />--%>
    <hr/>
    <h3>&ltc:param&gt &ltc:url&gt </h3>
    <c:url var="baidu" value="demo.jsp">
        <c:param name="name" value="xxxx"/>
        <c:param name="url" value="www.baidu"/>
    </c:url>
    <a href="${baidu}">跳转到c:url,c:param组合的url</a>

    <hr/>
    <c:forEach  items="${sessionScope.userList}"  var="userItem"  begin="1"  end="10"  step="3"  varStatus="userStatus">
        ${userStatus.index} 此项的索引，从0开始
        ${userStatus.count} 此项的计数序号，从1开始
        ${userStatus.first} 此项是否是第一项，布尔值
        ${userStatus.last} 此项是否是最后一项，布尔值
        ${userStatus.begin} 此次迭代的起始索引，对应&ltc:foreach&gt中begin属性值
        ${userStatus.end} 此次迭代的终止索引，对应&ltc:foreach&gt中end属性值
        ${userStatus.step} 此次迭代的跳跃步伐，对应&ltc:foreach&gt中step属性值
    </c:forEach>



    直接循环对象
<%--    <c:forEach  items="${sessionScope.userList}"  var="userItem"  varStatus="userStatus"> --%>
<%--        ${userItem.键名} --%>
<%--    </c:forEach>--%>
</div>

<div style="width: 100%; height: 50px; margin-bottom: 0;">

</div>
</body>
</html>
